package com.arnold.test.actions

import org.apache.spark.{SparkConf, SparkContext}

/**
  * Created by arnold.zhu on 2017/7/17.
  */
object Reduce {

  // 对于RDD可以有两种计算方式：转换（返回值还是一个RDD）与操作（返回值不是一个RDD）
  // ransformations操作是Lazy的，也就是说从一个RDD转换生成另一个RDD的操作不是马上执行，
  // Spark在遇到Transformations操作时只会记录需要这样的操作，并不会去执行，需要等到有Actions操作的时候才会真正启动计算过程进行计算。

  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setMaster("local").setAppName("Spark01Learn")
    val sc = new SparkContext(conf)

    // 根据scala集合创建rdd数据集
    val rdd = sc.parallelize(1 to 100)
    // 进行reduce操作 聚集数据集中的所有元素。Func函数接受2个参数，返回一个值。
    val sum = rdd.reduce((x, y) => {
      x + y
    })
    println(sum)
  }


}
